package com.ztorn.fiscale.service;

import java.util.List;
import com.ztorn.fiscale.domain.FiscaleOrder;

/**
 * 订单管理Service接口
 *
 * @author ztorn
 * @date 2025-01-18
 */
public interface IFiscaleOrderService
{
    /**
     * 查询订单管理
     *
     * @param orderId 订单管理主键
     * @return 订单管理
     */
    public FiscaleOrder selectFiscaleOrderByOrderId(Long orderId);

    /**
     * 查询订单管理列表
     *
     * @param fiscaleOrder 订单管理
     * @return 订单管理集合
     */
    public List<FiscaleOrder> selectFiscaleOrderList(FiscaleOrder fiscaleOrder);

    /**
     * 新增订单管理
     *
     * @param fiscaleOrder 订单管理
     * @return 结果
     */
    public int insertFiscaleOrder(FiscaleOrder fiscaleOrder);

    /**
     * 修改订单管理
     *
     * @param fiscaleOrder 订单管理
     * @return 结果
     */
    public int updateFiscaleOrder(FiscaleOrder fiscaleOrder);

    /**
     * 批量删除订单管理
     *
     * @param orderIds 需要删除的订单管理主键集合
     * @return 结果
     */
    public int deleteFiscaleOrderByOrderIds(Long[] orderIds);

    /**
     * 删除订单管理信息
     *
     * @param orderId 订单管理主键
     * @return 结果
     */
    public int deleteFiscaleOrderByOrderId(Long orderId);

    /**
     * 根据订单号查询订单
     *
     * @param orderNo 订单号
     * @return 订单信息
     */
    public FiscaleOrder selectFiscaleOrderByOrderNo(String orderNo);

    /**
     * 根据平台订单号查询订单
     *
     * @param platformOrderNo 平台订单号
     * @return 订单信息
     */
    public FiscaleOrder selectFiscaleOrderByPlatformOrderNo(String platformOrderNo);

    /**
     * 批量更新订单状态
     *
     * @param orderIds 订单ID数组
     * @param orderStatus 订单状态
     * @return 结果
     */
    public int batchUpdateOrderStatus(Long[] orderIds, String orderStatus);

    /**
     * 批量更新报关状态
     *
     * @param orderIds 订单ID数组
     * @param customsStatus 报关状态
     * @return 结果
     */
    public int batchUpdateCustomsStatus(Long[] orderIds, String customsStatus);

    /**
     * 生成订单号
     *
     * @return 订单号
     */
    public String generateOrderNo();

    /**
     * 同步平台订单数据
     *
     * @param platformType 平台类型
     * @param platformConfigId 平台配置ID
     * @return 同步结果
     */
    public int syncPlatformOrders(String platformType, Long platformConfigId);

    /**
     * 统计订单数量按状态
     *
     * @return 统计结果
     */
    public List<FiscaleOrder> selectOrderCountByStatus();

    /**
     * 统计订单数量按平台
     *
     * @return 统计结果
     */
    public List<FiscaleOrder> selectOrderCountByPlatform();

    /**
     * 校验订单号是否唯一
     *
     * @param orderNo 订单号
     * @param orderId 订单ID（编辑时排除自身）
     * @return 结果
     */
    public Boolean checkOrderNoUnique(String orderNo, Long orderId);
}
